home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
ms_dos
/
ifex
/
ifex.doc
next >
Wrap
Text File
|
1993-11-30
|
13KB
|
338 lines
93.8.15
拡張子選択式 ファイル実行ツール IFEX
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
1. このソフトの目的
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
パラメータとして指定したファイル名の拡張子に合わせて、登録された所定の動作を
させるためのものです。
拡張子による選択動作機能とは、MS-WINDOWやTOWNS-OSのファイル
マネージャ等に組み込まれている様な、拡張子が「.C」だったらCコンパイラを起動する
とか、「.MAG」だったらMAGローダを起動するとかの機能です。
最近のMS-DOS用ファイル管理ツールも、この手の機能を組み込んだものが増えてきま
したが、本ツールは、拡張子の機能を提供していないファイル管理ツールで使用出来る
他、専用ツールの利点を生かして1ランク上の機能を提供します。
2. 特徴
 ̄ ̄ ̄ ̄
(1) 引数(ファイル名)の拡張子を除いた形の使用が出来る。
(2) 複数のコマンドを指定出来る。(当然の機能かな?)
(3) コメントもバシバシ入れられる。
(4) 複数の引数の場合に、動作を選択する引数は何個目でも良く、指定出来る。
(5) 環境変数・指定ファイル内容・キー入力を記述式に引用出来る。
(6) 定義ファイルは、EXEと同じ名前を読むので、複数用意して使える。
また、オプション指定でEXEと違う名前の定義ファイルも使用出来る。
3. 使い方
 ̄ ̄ ̄ ̄ ̄
IFEX.EXEをパスの通った所に置き、IFEX.IFXも同じディレクトリに置いて下さい。
次項を見てIFEX.IFXを自分の環境に合わせて書き換えて下さい。
複数の「.IFX」定義を作って使用したい場合は、IFEX.EXEをリネームして、同名の
IFXを用意すると、そのIFXを読みにいきます。たとえば、「IFEZ.EXE」は、「IFEZ.IFX」
を読みにいきます。
また、IFXファイルをオプション指定する事も可能です。「IFEX --IFEX02 ~」の様に
第一引数ファイル名を指定すると、IFEXと同一ディレクトリにある「IFEX02.IFX」を探し
ます。ファイル名は、ディレクトリ名や拡張子はつけないで下さい。ファイル指定した
場合の第一引数は定義実行のためには無効となり、第二引数を第一・・・と言う風に
ひとつづつ繰り上げてチェックされます。
EXEの起動ディレクトリの取得をしていますので、MS-DOSの2.XXでは動かないと思い
ます。
4. IFXファイルの書式
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(1) 基本書式
書式: [n] <拡張子> <コマンド> [; <コマンド>] ・・・
n は 動作を決める拡張子を見る引数番号で、省略時は、1です。
引数・拡張子の後は、ブランクかタブか「:」が使え、複合して使っても大丈夫です。
尚、改行コードが発生するまでは一行とみなしますから、改行コードさえなければ
画面上での行数が何行になってもかまいません。
(2) 特殊命令
以下の命令が実行コマンドの記述中で使えます。
%0~%9 : IFEX起動時の引数と置き換えます。数字は半角を使って下さい。
$0~$9 : 引数をファイル名と見なし、拡張子を除いたものと置き換えます。
%* , $* : 事前に使われていない引数を1から順に繋いだ形に置き換えます。
; : 実行コマンドの区切り。これで複数のコマンドを繋いで書けます。
%~% : 環境変数を参照し、置き換えます。
もし所定の環境変数が存在しない場合には、単に無視され、エラー扱いには
なりません。
指定する環境変数名の1文字目は、半角数字と%は使用出来ません。
# : 以降をコメントと見なします。(行の途中にあっても可)
$\ : カレントディレクトリ名と置換。(最後は\なし)
$? : この命令があると、「?」を表示して入力待ちとなり、改行されるまでの入力
と置き換えます。
間違った入力を直したい場合のコードとして0x08と0x1dに対応しています
ので、殆どの機種のバックスペースキーとFMR系/98系等のカーソル左キー
に対応しています。
また、この命令は標準入力から受けていますので、IFEXに対してリダイ
レクトした入力と置き換える事も出来ます。
但し、$?の数より少ない行数のリダイレクト入力であった場合、その時点で
(少なくともFMRでは)ハングするので、御注意下さい。
尚、タブを除く0x20以下のコードは無視されます。
$! : この命令があると、次の行へ検索が進みます。
この命令で先の行へすすめた後、実行すべき命令がなかった場合には、
実行条件を見つけられなかった扱いになります。
(IFEX終了時のエラーレベルに反映されます。)
$<~$ : 「~」をファイル名とみなし、ファイル内容の一行目と置き換えます。
ファイルがなかった場合には、単に無視され、エラー扱いにはなりません。
ファイル名の指定の中には、環境変数参照以外の命令は使えません。
$$ ,・・・ : コマンドと重複する記号($%;#)を実行コマンド記述中に使いたい場合、
例えば、 「$」を使いたい時は、「$$」と書きます。
%% : 「$%」と等価で、「%」と置き換えます。(バッチとの互換のため特例対応)
5. アプリケーション
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
IFEXは、コマンドラインで使う事は出来ますが、ファイル管理ツール等から呼び
出して使ってこそ実力を発揮します。
いくつか使い方を紹介しますが、詳細は、それぞれのツールのマニュアルも良く
読んで研究をお願いします。
(1) からすさん作 ファイル管理ツールFMの場合
大きく分けて、ふたつの使い方があります。
ひとつは、環境変数「FMEX」を使用する方法です。環境変数に「FMEX=IFEX」と定義
すると、マークしたファイルを改行キーでエディタ起動する変わりに、IFEXで実行
します。
添付のIFEX.IFXの定義を使えば、複数のファイルをマークして実行した場合、LZH
があれば、その中へ他を圧縮移動する等、今までの同等のツールと一味違う使い方が
出来ます。
但し、あまり多くのファイルにマークして実行すると、MS-DOSの制約から
一度に実行出来ないため、FMが数回に分けて実行しますので予定の動作をしない事が
ありますので、注意して下さい。
もうひとつは、コマンドとして登録する方法です。FM.CFGの最後に「X:IFEX $t$k$r」
の様に登録しておけば、タブ→XキーでマークしたファイルをIFEXで実行出来ます。
この場合も、あまり多くのファイルにマークしてはいけないのは同様です。
尚、上記のどちらの場合でも、IFEXは、一回だけの動作になります。例えば、
「.MAG」のファイル3個にマークして起動した場合、MAGローダを3回起動するのでは
なく3個のファイル名をつなげて、MAGローダを1回起動します。
これは、IFEXの仕様であり、通常の拡張子動作型のコマンドと異なる点です。この
仕様の違いがIFEXの独自の便利さを生み出す元ですが、逆に困る場合もあります。
例えば「.MAG」と「.JPG」のふたつにマークしてそれぞれの画像を連続して見たい場合等
です。こういう場合は、FM.CFGに「Z:IFEX $m$k$r」と定義しておき、使い分けて下さい。
(2) A.Ideiさん作 ファイル管理ツールFDの場合
私個人は、98ユーザでないため、FDは使っていないのですが、FDユーザの方
に聞いた所では・・・
環境変数で「EXVIEW=IFEX」と定義しておけば、改行キーで、EXE/COM以外に対して
ページャが起動する変わりに、IFEXで実行出来ます。
また、「1x IFEX $t$k$r」とコマンド登録しておけば、グラフキー+Xキーでマーク
ファイルをIFEXで実行出来ます。
あまり多くをマークしてはいけない点と、マークファイル毎のコマンド起動がしたい
場合は、「1z IFEX $m$k$r」と定義すれば良い点等は、FMの場合と同じだそうです。
(3) K.ISHIDAさん作 ファイル管理ツールFILMTNの場合
FILMTNは、IFEXの様な機能を内蔵していますが、ファイルに対して単に
改行した場合はエディタを起動する様にしておいて、ALT+Xで、IFEXを起動
し、コンパイラ等を起動する様にしておけば、プログラマは便利だと思います。
また、複数のファイルをマークして実行した場合に、LZHがあれば、その中へ他を
圧縮移動する等のIFEXの売りである機能が使えます。
「X:IFEX $T$K」の様に登録して下さい。
あまり多くをマークしてはいけないのは、FMの場合と同様です。また、マークファ
イル毎の起動がしたい場合は、「Z:IFEX $M$K」で出来ますが、この定義だとFILMTN自身
で定義するのに対して優位性はないです。
(4) 市販品 エディタVzの場合
以下のマクロを使えば、編集中のテキストをセーブして、IFEXに引渡します。
テキストの拡張子によって、各種コンパイラを起動する、等の用途に使えます。
=======================================
80 @Z "IFEX起動"
?. #S #m #E "IFEX " #P #m
=======================================
また、Vzのファイラーのメニューに入れても使えます。
(5) 市販品 エディタRED2の場合
RED2は、自動コンパイル機能として「CC.BAT」を起動する機能を持っています。
これを利用してIFEXを起動すれば、テキストの拡張子によって各種コンパイラを起動
する、等の用途に使えます。
IFEX.EXEとIFEX.IFXをCC.EXEとCC.IFXにリネームして、パスの通った所に置きます。
もし、CC.BATというものがあったら別の名前に変えて下さい。
これで、PF4のメニューから自動コンパイルを選ぶと編集中のテキストをIFEX
で実行出来ます。
(6) A.Ideiさん/Paciさん作 ページャ MIELの場合
ふたつの定義ファイルを使って2重起動する事でMBATとしても使えます。
バッチファイルとしてMBATを構築するよりも、はるかに簡単に自分用のMBATが書ける
はずです。
[使用方法]
IFEX.EXE をリネームコピーして、MBAT.EXEにして下さい。このMBAT.EXEと添付の
MBAT.IFXとMBATLZH.IFX をPATHの通った同一のディレクトリに置きます。
添付のMIELMBAT.DATをRXMBATで定義した所に置くと便利です。
LZH書庫内処理をするためには、MIELのLZH内直視機能とset_lzh2fileが1にカスタ
マイズされているか、「-l -nt」付で起動する必要がありますので、確認して下さい。
その他、詳細はMIELのドキュメントを見て、MBATの使い方を覚えて下さいね。
尚、IFEXの仕様上、MIELからのコマンドは大文字・小文字の区別が出来ません。
6. 高度な使い方をしたい方のためのメモ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(1) コマンド実行について
実行時には子プロセスを起動しており、DOS5.0で16KB程度、DOS3.1で18KB程度の
メモリを消費します。
(2) 拡張子選択型?
IFEXは、拡張子選択型のツールと称していますが、実際は、後方一致の検索
をしています。そのため、ファイル名を断定的に指定する等の使用方法も出来ますし
MBATとして使用する等の方法が生まれる訳です。
例えば、私自身のIFEX.IFXには、こんな行があります。
fm.cfg %EDITOR% %1 ; echo Y | confm
FMを再カスタマイズする事が目的です。バッチ書けばいいじゃないかと思われる
かも知れませんが、こうやって書いておけば、複数のバッチを1クラスタに出来るの
と同じですので、ディスク使用量をちょっと節約出来ます。(いじこい)
(3) 環境変数について
単に、環境変数は参照出来るがセット出来ないのが仕様と考えてもらって、問題
なければいいんですが、言い訳と代替手段を。
実行するコマンド毎に子プロセスを起こしますので、以下の例の様に環境変数を
セットするのは、その子プロセスが終了した後に残らないため、「;」の後のコマンド
には環境変数を引き渡せず、無意味になってしまいます。
以下の例の様な事がやりたい場合は、その下に示す様な、ファイル参照機能を使用
して補って下さい。
-----------------------------------------------------------------------
.TST SET WORK=D:\TMP ; TEST.EXE %WORK%\%1 # 環境変数のSETは無効
-----------------------------------------------------------------------
------------------------------------------------------------------------
.TST ECHO D:\TMP > IFEX.TMP ; TEST.EXE $<IFEX.TMP$\%1 ; DEL IFEX.TMP
------------------------------------------------------------------------
(4) IFEXの戻り値
IFEXの返すエラーレベルは以下の通りです。
正常終了時 0
実行すべき条件なし 1
IFXファイルのオープン失敗 2
IFXファイル異常 3
HELP表示 10
(5) IFEXに引き渡した引数
IFEXへのパラメータが必ずしも小文字とは限らないですし、起動に使うプログ
ラムによっては、大文字/小文字の制御が出来ない場合もあるでしょうから、条件の
判定は半角英文字の大文字/小文字の区別をしない様になっています。
V1.02までは、引数を小文字に直しながら動いていましたが、この点は、
改善しました。
7. 謝辞
 ̄ ̄ ̄ ̄
本プログラムは、NamさんのEXの機能を参考に作らせて頂きました。
IFEXの公開を快く了解いただいたNamさん、仲を取り持って頂いたからすさん
ありがとうございました。
素晴らしいコンパイラを公開してくれた LSI Japan に感謝します。
(おかげで、Cを勉強する気になりました(^_^))
また、猫之介さんのおかげで、IFEXがまる1頁にもわたって紹介された本が発売され
ました。ありがとうございます。(98用の本で、「フリーソフトウエア1番館」と
いう本です。
尚、アプリケーションの項で、作者名入りで紹介させて頂いたツールは、全てフリー
ソフトウエアと呼ばれる分野のものです。愛用させて頂いているフリーソフトの作者の
方々へ、この場を借りて、感謝の意を表明いたします。
8. 動作確認状況
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
現在では、以下の機種で動作確認がとれています。
その他の機種でも動いた方は、御連絡頂けるとありがたく思います。
富士通 : FMR/TOWNS 東芝 : ダイナブック NEC/EPSON : 9801/互換機
9. 使用条件等
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
本ソフトは著作権を放棄していないフリーウエアです。
個人的にお使いになる分には、自由に使って頂いて結構ですが、販売等の営利行為は
止めて下さい。
また、バグ等には極力対応したいと思いますが、本ソフトの使用の結果、発生した
損害等に対しては、作者は責任を追いかねますので、御了承下さい。
転載については、基本的には歓迎しますが、メンテ等の問題がありますので、事前に
連絡をお願いします。私自身は、NIFTY以外の商用NETは入っていませんし、
草の根NETも殆ど回らないので、転載して頂く方にそのNETでの事をお願いする事
になると思います。
感想・バグレポート・改良希望等、どしどしお寄せ下さい。
10. 付記
 ̄ ̄ ̄ ̄
V1.03にて、ドキュメントを大幅に書き直しました。その主目的は、初心者に混乱を
与える様な、ややこしい記述や添付IFXの削除です。初心者には混乱を与え、理解
出来る人なら、わざわざ記述がなくても自力で応用するのではないかと思われたから
です。V1.03は、旧版の上位互換ですので、旧版に書いてあった事・添付されていた
IFXファイルは、そのまま使って、何の問題もありません。
11. 変更履歴
 ̄ ̄ ̄ ̄ ̄ ̄
V1.00 92/05/08 公式公開。
V1.01 92/06/06 IFXファイル名のオプション指定機能追加。
$! $? $<~$ 記述追加。
V1.02 92/11/05 引数に漢字があると化けるのを修正。
プログラム名が「\」を含む漢字コードを含んだ場合に対応。
$?での入力時に0x1dもBSとして判断。
V1.03 93/08/15 $\コマンド追加。
引数を小文字に直していたのを直さない様にした。
サイズの小型化。
ドキュメントの大幅書き直し
by まさき君 / NIFTY MGH01362